Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.09.2016, 08:48
Аспирант
Отправить личное сообщение для Eliot456 Посмотреть профиль Найти все сообщения от Eliot456
 
Регистрация: 26.05.2015
Сообщений: 44

ajaxupload внутри ajax запроса
Здравствуйте. Помогите, пожалуйста разобраться с асинхронной загрузкой файла в форме которая получена аяксом.
Есть форма которая заполняется последовательно, поля меняются через ajax, по мере заполнения. На последнем этапе предлагается загрузить файл изображения. Использую плагин ajaxupload.js там есть опция action, аналогичная url в методе ajax jquery. При попытке загрузки сервер присылает 500 ошибку. Как прописать action ?
$('#customer-reg-step1').on('beforeSubmit', function () {

		var form = $(this);
	        var error = false;
	        var name = $("#users-username").val();
	       
	        if(name == '' ){
	        	error = true;
	        	return false;
	        }
	        if(!error){
	            $.ajax({
	              type: "POST",
	              url: '/registration/customer',
	              data: $('#customer-reg-step1').serialize(),
	              success: function(res){
	                var result = JSON.parse(res);
	                if(result.answer == 'Данные добавлены'){
	                  var showContent = result.html_form;
	                //    $('.reg-form').attr('action', result.action_form);
	                    $('#send-wrap').remove();
	                    $('.reg-form').append(result.submit_code);
	                }else if(result.answer == 'Данные получены'){
	                	$('.reg-form-row, #flag2').remove();
	               		$('.reg-form').append(result.html_code);
	               		$('.reg-steps li').eq(1).removeClass('active').addClass('completed');
						$('.reg-steps li').eq(2).addClass('active');
						var button = $('#img-upload'), file;
						new AjaxUpload(button), {
							action: '/registration/upload',
							data: {file: "file"},
				  		  	name: 'userfile',
				  		  	onSubmit: function(file, ext){
					            if (! (ext && /^(jpg|png|jpeg|gif)$/i.test(ext))){
					                // extension is not allowed
					                alert('Ошибка! Разрешены только картинки');
					                // cancel upload
					                return false;
					            }
					          
					            this.disable();
					           	$('.uploader').fadeIn();
					           	$('#img-upload > img').fadeOut();
					        },
					        onComplete: function(file, response){
					          
					        }
						})
	                }else if(result.answer == 'Сохранено'){
	                	document.location.href = '/registration/customer';
	                }
	                $('input').focus(function(){
	                	$('.castom-help-block').remove();	
	                })
	              }, 
	              error: function(){
	                alert('Ошибка');
	              }
	            })
	          }
			return false; 
	})
Ответить с цитированием
  #2 (permalink)  
Старый 14.09.2016, 15:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Eliot456
При попытке загрузки сервер присылает 500 ошибку.
В первую очередь причину этого нужно искать на сервере. Причин ошибки 500 много, от .htaccess до запрета записи в каталог (MOD).
Ответить с цитированием
  #3 (permalink)  
Старый 15.09.2016, 05:26
Аспирант
Отправить личное сообщение для Eliot456 Посмотреть профиль Найти все сообщения от Eliot456
 
Регистрация: 26.05.2015
Сообщений: 44

500 ошибка только в консоли прилетает, если вбить адрес в адресную строку, то все отрабатывает без ошибок
Ответить с цитированием
  #4 (permalink)  
Старый 15.09.2016, 07:09
Аспирант
Отправить личное сообщение для Eliot456 Посмотреть профиль Найти все сообщения от Eliot456
 
Регистрация: 26.05.2015
Сообщений: 44

Еще момент, если форма получена аяксом, нужно в запросе дублировать javascript код (удаление каких то элементов из формы по клику, например) иначе скрипт не работает. Можно как то не дублировать данный код в аяксе, а каким то образом инициализировать его внутри аякса?
Ответить с цитированием
  #5 (permalink)  
Старый 15.09.2016, 15:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Eliot456
00 ошибка только в консоли прилетает, если вбить адрес в адресную строку
А адрес то тут причем? Вы отправляете файл и данные, а не просто обращаетесь по адресу. Хотите понять где конь, тогда отправьте форму обычным способом без Ajax.

Сообщение от Eliot456
нужно в запросе дублировать javascript код
Что значит дублировать?
Ответить с цитированием
  #6 (permalink)  
Старый 15.09.2016, 21:41
Аспирант
Отправить личное сообщение для Eliot456 Посмотреть профиль Найти все сообщения от Eliot456
 
Регистрация: 26.05.2015
Сообщений: 44

Сообщение от laimas Посмотреть сообщение
Что значит дублировать?
Если загрузить форму обычным способом, то скрипты работают без проблем (валидация на стороне клиента, например), если по ajax, то нужно внутри метода ajax прописывать эти же скрипты иначе они не срабатывают, хотя все файлы подключены.
Ответить с цитированием
  #7 (permalink)  
Старый 15.09.2016, 23:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Делегирование в JQ.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с отправкой Ajax запроса большого объема Aladdinych AJAX и COMET 6 30.08.2013 17:16
Обработка данных во время AJAX запроса user783 AJAX и COMET 5 09.12.2011 03:24
Как приостановить выполнение скрипта до получения результата AJAX запроса? Хиросим AJAX и COMET 9 31.10.2011 10:56
Проблема с событиями после ajax запроса Mirgorod AJAX и COMET 5 12.06.2010 18:24
Сохранение результата ajax запроса после нажатия 'back' gregOlsen AJAX и COMET 5 18.11.2009 12:23